extends Node2D

# 面向对象解耦的方法

func _ready():
	#1. 使用信号的好处是， child1 非常独立，可以作为多个节点的子场景。 子场景与父节点通信使用信号。耦合度非常低
	$Child1.child1_signal.connect(receiver)
	$Child1.child1_signal.connect(Callable($Child2,"receiver"))
	
	#2. 使用函数解耦：指定函数名称
	$Child1.fn_do = "get_from_other"
	
	#3. 使用函数解耦：指定函数
	#$Child1.fn_callback = self.callback 
	var inner_fn = func():
		print("回调：get from lambd")
	$Child1.fn_callback = inner_fn
	
	#4. 使用节点，相当于代理接口
	$Child1.target_node = $Child2
	
	#5. 同4，使用节点字符串:这种并不是很灵活，容易出错
	$Child1.target_node_name = "../Child2"
	
func receiver():
	print("信号:main收到了信号")

func callback():
	print("回调：来自回调")
